您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

从可公开访问的储存装置访问有关数据处理机状态的私有数据

  • 申请号:CN200480035019.4 申请公布号: CN1886711B
  • 申请日: 2004-11-07 申请公布日: 2014-07-23
  • 申请(专利权)人: 专利代理机构: 上海专利商标事务所有限公司
  • 分类号:G06F1/00

专利介绍

根据本发明的实施方案,描述了操作数据处理机的方法,其中有关机器状态的数据被写入储存装置的位置上。所述位置可被为机器编写的软件访问。被写入的状态数据是已被编码的。可以根据解码处理从储存装置恢复该状态数据。还描述了其他实施方案并且主张对它们的权利要求。
1.一种用于操作数据处理机的方法,包括:a)使用处理器对所述处理器的私有状态数据应用编码处理,其中所述私有状态数据捕获所述处理器的状态;b)将所述已编码私有状态数据写入储存装置中的位置,所述位置对于为所述处理器编写的软件是可访问的;以及c)由所述软件使用一指令来从所述储存装置读取所述已编码私有状态数据,所述指令导致所述处理器解码所述已编码私有状态数据;其中所述私有状态数据是指以下中的一个:1)所述处理器的内部寄存器的内容,所述内容在软件开发者要用到的所述处理器的指令手册中没有明确标识,以及2)所述处理器的内部寄存器的内容,所述内容在软件开发者要用到的所述处理器的指令手册中明确标识,但以一种软件开发者要用到的所述处理器的指令手册中没有明确标识的格式或位置被存储。
2.如权利要求1所述的方法,其中所述编码处理阻止试图通过与所述解码处理所不同的第二处理从所述储存装置恢复所述私有状态数据。
3.如权利要求1所述的方法,其中所述编码处理被配置为使得所述软件的设计者在编写所述软件时应用所述处理器制造商指定的技术来访问储存装置中的所述私有状态数据而不是绕过所述技术。
4.如权利要求1所述的方法,其中所述私有状态数据被写入以下中的一个:所述处理器寄存器文件中的可公开访问位置,缓存,以及存储器。
5.如权利要求1所述的方法,其中,在重复a)-b)时,在所述编码处理期间所述处理器的给定内部寄存器的被写入内容的位置至少随意改变一次。
6.如权利要求1所述的方法,其中,在重复a)-b)时,在所述编码处理期间所述处理器的给定内部寄存器的被写入内容的储存格式至少在大端序和小端序之间随意改变一次。
7.如权利要求1所述的方法,其中,在所述编码处理期间密码被应用于给定内部寄存器的内容以产生随后写到储存装置中所述位置的已编码值。
8.如权利要求1所述的方法,还包括将已恢复状态数据存入所述处理器的私有储存空间。
9.一种用于操作数据处理机的设备,包括:数据处理机,所述数据处理机具有私有内部状态,所述内部状态当所述数据处理机执行提供给它自身作为部分程序的指令时改变,其中所述数据处理机对关于所述内部状态的数据进行编码并且将所述已编码状态数据写入储存单元中的位置,其中所述位置可以被所述数据处理机的指令集体系结构读取;其中所述关于所述内部状态的数据是指以下中的一个:1)所述数据处理机的内部寄存器的内容,所述内容在软件开发者要用到的所述数据处理机的指令手册中没有明确标识,以及2)所述数据处理机的内部寄存器的内容,所述内容在软件开发者要用到的所述数据处理机的指令手册中明确标识,但以一种软件开发者要用到的所述数据处理机的指令手册中没有明确标识的格式或位置被存储。
10.如权利要求9所述的设备,其中所述数据处理机是处理器,所述处理器具有特殊的读微操作,在所述处理器从所述储存单元恢复所述状态数据时被使用。
11.如权利要求10所述的设备,其中所述处理器还包括内部缓存并且也把所述已编码状态数据写到所述缓存的公开位置。
12.如权利要求10所述的设备,其中所述处理器恢复所述状态数据并且将所述已恢复状态数据写到所述处理器的私有位置。
13.如权利要求10所述的设备,其中所述处理器恢复所述状态数据并且用所述已恢复状态数据配置自身以准备恢复执行挂起的任务。
14.如权利要求10所述的设备,其中所述处理器包括:由制造商定义的指令,所述指令在其被所述处理器执行时恢复所述储存单元的所述状态数据。
15.如权利要求9所述的设备,其中所述数据处理机是处理器,为所述处理器定义了用于访问所述储存单元的所述已编码状态数据的特殊的微操作,并且其中所述处理器还包括地址混淆单元,用于接收与所述处理器给定的状态数据相关联的地址值,所述地址值已从所述特殊微操作的发送中获得,所述混淆单元提供已编码的物理地址值,所述值指向所述给定状态数据存入其中的所述储存单元中的实际位置。
16.如权利要求9所述的设备,其中所述数据处理机是处理器,为所述处理器定义了用于访问所述储存单元的所述已编码状态数据的硬件控制信号,并且其中所述处理器还包括内部缓存,数据转换单元从所述内部缓存接收作为从所述硬件控制信号中获得的缓存命中的结果的数据值,所述转换单元将所述数据值解码成所述处理器的实际状态数据。
17.一种计算机系统,包括:处理器;以及主存储器,所述主存储器可通信地耦合到所述处理器并且具有被指定用于以已编码形式存储所述处理器的私有状态数据的公开区域,其中,所述处理器的指令集体系结构包括从所述公开区域解码并读取所述私有状态数据的指令;其中所述私有状态数据是指以下中的一个:1)所述处理器的内部寄存器的内容,所述内容在软件开发者要用到的所述处理器的指令手册中没有明确标识,以及2)所述处理器的内部寄存器的内容,所述内容在软件开发者要用到的所述处理器的指令手册中明确标识,但以一种软件开发者要用到的所述处理器的指令手册中没有明确标识的格式或位置被存储。
18.如权利要求17所述系统,其中所述处理器在将所述私有状态数据存入所述公开区域之前对所述私有状态数据编码。
19.如权利要求17所述系统,其中所述处理器在使用从所述公开区域读取的值之前对其进行解码。
20.如权利要求17所述系统,其中所述处理器还包括内部储存单元,其中指定了公开区域用于以已编码形式存储所述私有状态数据的拷贝。
21.如权利要求20所述系统,其中所述内部储存单元是缓存和寄存器文件中的一个。
22.如权利要求20所述系统,其中在所述内部储存单元中指定私有区域用于以未经编码的形式存储所述私有状态数据。
23.如权利要求17所述系统,还包括将所述处理器可通信地耦合到所述主存储器的系统芯片组。
24.一种操作数据处理机的方法,包括:对关于所述数据处理机的状态的私有状态数据进行编码;以及将所述已编码私有状态数据写入储存装置的位置,所述位置对运行于所述数据处理机的软件是可读取的;其中所述私有状态数据是指以下中的一个:1)所述数据处理机的内部寄存器的内容,所述内容在软件开发者要用到的所述数据处理机的指令手册中没有明确标识,以及2)所述数据处理机的内部寄存器的内容,所述内容在软件开发者要用到的所述数据处理机的指令手册中明确标识,但以一种软件开发者要用到的所述数据处理机的指令手册中没有明确标识的格式或位置被存储。
25.如权利要求24所述方法,所述编码操作还包括对所述私有状态数据的值进行加密以产生所述已编码私有状态数据。
26.如权利要求24所述方法,其中关于所述数据处理机的所述状态的所述私有状态数据是寄存器值和所述储存装置的值中的一个。
27.如权利要求24所述方法,其中所述编码操作包括用于混淆所述私有状态数据的地址值的地址编码。
28.如权利要求24所述方法,还包括:根据解码处理从所述储存装置中恢复所述私有状态数据。
29.如权利要求28所述方法,其中所述恢复操作包括:从存储器中读取多个值;以及组合所述读取的多个值以形成所述私有状态数据的单个未经编码的值。
30.如权利要求28所述方法,其中所述恢复操作包括:从存储器的一个或更多个不连续的位置中读取多个值;组合所述读取的多个值以形成单个值;以及对所述单个值进行解码以形成所述私有状态数据的未经编码的值。
31.如权利要求28所述方法,还包括将所述已恢复的私有状态数据存入所述数据处理机的私有储存装置。背景本发明的一些实施方案涉及处理器如何从计算机系统的储存装置(storage)读取数据和将数据写入储存装置。还描述了其他的实施方案。由于各种设计考虑,一些处理器可以将私有状态数据写入可公开访问储存装置的区域中。该私有状态的格式、语义和位置可以在各种设计实现中有所不同。在描述处理器的文献中,这样的储存区域常被标记为“保留的”,表示它们的内容不应被读取或修改,因为他们包括私有状态。不幸的是,因为该数据被写入到可公开访问储存装置,所以软件应用、操作系统或外部代理(agent)(比如输入输出设备)可以访问该储存区域(storagexa0region)并且不当使用存储在其中的私有状态。这些未经核准的实体对该私有状态的访问和使用可能给处理器和平台制造商和终端用户带来错误和/或不期望的影响。附图简要说明本发明的实施方案是以实施例的方式而非限制的方式在附图中说明的。在附图中,同样的标号表示相似的要素。应该注意到,本公开中的提到的本发明的“一个”实施方案不一定是指同一实施方案,并且他们表示至少一个实施方案。图1示出了根据本发明的实施方案,可以混淆/编码私有状态数据的公开储存装置的计算机系统的方框图。图2描述了根据本发明的实施方案,描绘从私有状态储存区域读取已编码私有状态数据值的方法的流程图。图3描述了根据本发明的实施方案,描绘将已编码私有状态数据值写入私有状态储存区域的方法的流程图。图4示出了根据本发明的实施方案的计算机系统的方框图,在所述计算机系统中处理器被设计为当私有状态数据被写入公开储存装置时混淆/编码所述私有状态数据。图5描述了根据本发明的实施方案,可用于实现混淆/编码私有数据的示例性功能部件。图6描述了根据本发明的实施方案的部分示例性的地址混淆/编码单元的更详细的逻辑图。详细描述在处理器操作期间,写入储存装置(例如存储器(memory))的处理器状态可以包括两类信息或数据。一类在此被称为体系结构数据,而另一类被称作针对实现的数据(在此也称为“私有数据”或“私有状态数据”)。体系结构数据是状态信息,所述状态信息对于所有制造商指定的特定类别的处理器是共同的,也就是具有基本相同的硬件和软件间的高级接口。该接口被称为指令集体系结构(ISA)。在各种处理器实现上使用相同的ISA促进(facilitate)为一个实现特别编写的软件在随后的实现上运行而不用改动的能力。ISA定义了运行于处理器上的软件可用的状态、格式和语义,以及可用的操作接口(例如指令、事件)。部分ISA规范描述了处理器如何使用一个或更多个机器储存装置(例如存储器)的区域来帮助(facilitate)其操作。这些储存区域可以被处理器驻留其中的数据处理机中的软件和其他设备(例如输入输出设备等)访问。处理器可以使用这些储存区域来存储体系结构数据和私有状态数据。例如,考虑具有Intel公司制造的Intelntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="64"/>Pentiumntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="64"/>处理器的ISA的处理器,在此称为IA-32xa0ISA。在某些操作期间,所述处理器可以利用储存装置中的区域。例如当IA-32xa0ISA处理器进入系统管理模式时,它将各种数值存入储存装置中被称为系统管理(SMM)状态保存区的区域。各种体系结构数据(例如各种机器寄存器比如ESI、EBP等)以ISA的文档指明的格式被存入ISA的文档中指明的位置。此外,各种私有数据被存入系统管理状态保存区。在ISA的文档中,这些私有状态数据被标记为“保留的”;该私有数据的内容、格式和语义在ISA文档中并未指明。这些“保留的”储存装置的区域在此被称为“私有状态区域”。不同的处理器可以被设计具有不同的私有状态数据,在此也被称为“私有数据”。例如,这样做可以改善性能或降低制造成本。例如,可以添加新的内部寄存器,可以以不同的方式使用一些旧的内部寄存器,可以改变要写入储存装置的寄存器内容的格式或位置以获得更高的效率。因此这些较新的处理器的私有数据将与那些较老版本的处理器在内容、格式、语义或位置上有所差异。当私有状态数据存储在可公开访问的区域,如主存储器或其他储存装置时,将出现困难。在此,对于例如基本输入输出设备(BIOS)、操作系统、虚拟机管理器或管理程序(hypervisor)、设备驱动的软件,或例如I/O设备或其他外部代理的应用和硬件来说对该私有状态数据的访问(也就是读和/或写)是可能的。这些实体对该私有状态数据的使用可以给处理器和平台制造商和终端用户带来错误和/或不期望的影响。例如,如果应用依赖于一个处理器实现中可用的具体的私有状态数据,那么当该应用运行在以不同方式实现(或根本没有实现)私有状态的不同的处理器实现上时它可能错误地运行(functionincorrectly)。由于内部处理器到存储器的一致行为/策略(policy)随着实现发生改变,依赖于私有数据的软件也可能会失效。对于私有状态数据的软件依赖可能复杂化和/或限制处理器制造商可用的与私有状态的使用有关的实现选择方案。因此,处理器制造商常常在文档中将这些私有数据(和它在存储器区域中的储存装置)记为“保留的”,表示其在未来的实现中可以改变。上面提到的在较新的机器中运行旧软件的能力假定旧软件没有不当访问机器的私有数据(私有数据可以随着较新版本的机器改变)。然而,已经发现的是,软件开发者正在编写的应用和操作系统程序的做法恰恰相反,即访问和依赖于存储在例如主存储器中的私有数据。这产生了问题,因为较旧的软件可能在较新的机器上不能正确地运行,即使较新的机器与较旧的机器具有相同的体系结构数据并且还能够“理解”较旧的访问已存储状态数据的机制(例如加载和存储ISA中定义的指令)。这是因为一些或所有私有数据可能在较新的机器中已经发生了改变,导致软件错误地运行(function)。此外制造商可能不愿意对其处理器的未来版本增加改进,因为这样作将冒着与较旧的软件不兼容问题的风险。根据本发明的实施方案,描述了数据处理机和操作方法,所述数据处理机和方法并不鼓励软件开发者编写依赖于存储在储存装置的可公开访问区域的私有状态数据(例如特定值、特定值的位置、语义或格式)的软件。这可以允许所述机器的未来版本随着机器内部硬件设计的发展呈现出(exhibit)关于可能需要的私有数据的不同行为,但还是呈现出相同的运行较旧软件所需的ISA。本发明的一些实施方案鼓励使用结构化(architected)接口,所述接口连接到被存为私有状态数据的数据。例如可以通过指定要被访问的数据的特征,而不是所述数据在私有状态数据区域中的位置来提供访问被存为私有状态数据的数据的指令。在提供体系结构机制来访问数据的同时,这允许了在如何存储数据(例如在私有状态区域中)方面的实现自由度。例如,假设存储在IA-32xa0ISA的系统管理状态保存区(如上所述)的数据元素(dataelement)是CS段(segment)的基地址值。该数据元素在状态保存区的储存位置没有在ISA规范中详细指明。相反,可以由ISA提供不直接对该数据寻址的指令。该数据元素可以以任何处理器实现所期望的方式被编码和被存入状态保存区(或者它根本就不被存入存储器的私有状态区,并且改为保留(retain)在例如处理器中的特殊寄存器中或位置上)。相比于指定的结构化接口,本发明允许以阻止数据的快速软件解码的方式来编码私有状态数据。本发明的实施方案可以根据目标处理器和平台改变编码复杂性。一旦获悉目标处理器,本领域的技术人员可以选择本发明的实施方案,该实施方案确保基于软件的用于对选定的编码进行解码的方法要比使用指定(prescribed)接口(比如指令)花费更长的时间。例如,未指定的软件方法可以在400个时钟内(例如使用特定指令和算法)对特定私有状态数据解码,而体系结构上指定的指令和方法可以在400个时钟的一小部分时间内实现。本发明的实施方案在于使用特定的标准(metrics)来评价私有状态解码的成本,包括例如时间(速度)和功耗的标准。使用在这里,术语“编码”包括诸如加密、译成密码、格式化、或具体位(bit)模式的指派或解释。本发明的实施方案的编码在此被称为“混淆”私有数据。现参照图1,示出了计算机系统的方框图。软件120运行在平台硬件102上。平台硬件120可以是个人计算机(PC)、主机、手持设备、便携式计算机、机顶盒,或任何其他计算系统。平台硬件102包括处理器110、储存装置130并且可以包括一个或更多个输入输出(I/O)设备140。处理器110可以是任何类型的能够执行软件的处理器,例如微处理器、数字信号处理器、微控制器等。处理器110可以包括用于执行本发明的实施方法的特定方法实施方案的微码、可编程逻辑或硬编码逻辑。虽然图1只显示了一个这样的处理器110,但是在系统中可以存在一个或更多个处理器。所述一个或更多个I/O设备140可以是,例如示例性的网络接口卡、通信端口、视频控制器、盘控制器、系统总线和控制器(例如PCI、ISA、AGP)或集成到平台芯片组逻辑或处理器中的设备(例如实时时钟、可编程定时器、性能计数器)。一些或所有I/O设备140可以拥有直接存储器访问(DMA)能力,以允许它们在独立于处理器110或软件120或者在处理器110或软件120的控制下对储存装置130进行读和/或写。储存装置130可以是硬盘、软盘、随机访问存储器(RAM)、缓存存储器(cachememory)、只读存储器(ROM)、闪存存储器、静态随机访问存储器(SRAM)、以上设备的任何组合或任何其他类型的可被处理器110访问的储存介质。储存装置130可以存储用于执行本发明的方法实施方案的指令和/或数据。储存装置130可以是处理器的寄存器(register)文件的可公开访问区域,或可以是位于处理器的外部的区域,例如主存储器。关于机器状态112的数据,例如某些内部寄存器114的内容,被写入储存装置130中的私有状态区域132,其中被写入的状态数据是“已编码的”或“已混淆的”。因此,虽然因为状态数据可以被运行在平台硬件102上的I/O设备140或软件120(例如操作系统122,应用软件124)访问,所以所述状态数据被写入的位置是公开的,但编码操作使得状态数据很难以及时的方式进行逆操作(即被解码)。要从储存装置130中恢复状态数据时,可以应用特定的解码处理,例如由处理器制造商定义的处理器发起的(processor-initiated)解码处理。对解码处理的控制可以联系到特定的处理器功能,例如如下所述特定的指令和控制信号。用于访问状态数据的未指定的方法(替代的软件指令和算法)不会激活这些控制并因此其成本可能更高。已恢复的状态数据可以随后置入本地状态112中,所述本地状态112可以被或不可以被软件120或I/O设备140访问。本地状态112可以是例如在内部缓存或寄存器中的区域,所述内部缓存或寄存器对于经过指令集体系结构(ISA)的不受控制的访问是不可获得的。在一些情况下本地状态不能被软件或其他外部代理(例如I/O设备)访问。在一些情况下,一些或所有的本地状态可以被软件或其他外部代理访问。在其他情况下本地状态可以通过特定的接口(例如指令)被间接访问。由于其相对于处理器是内部的并且不在“公开”储存装置中,处理器可以严格规定对本地状态的访问。虽然被写入储存装置130的可公开访问区域的状态数据是已编码的形式,制造商定义的指令可以被软件用于恢复储存装置130中的数据,所述指令可以是用于处理器的ISA的一部分。编码应该足够健壮(strong)以阻止软件开发者在试图访问状态数据时绕过(circumvent)该指令。在下面将参照图5描述使用微操作或硬件控制信号来读取或恢复储存装置的状态数据所需的内部逻辑的实施例。在一个实施方案中,用到的编码处理只需要足够健壮以使得软件120的设计者在写软件时应用处理器制造商指定的技术来从存储器访问状态数据,而不是绕过该技术。在其他情况下,如果制造商想使软件开发者访问和依赖存储器中的状态数据(包括特定值、特定值的位置、语义或格式)变得更加困难,编码可以更加健壮一些。用于控制私有状态的编码和解码的控制信号可以与例如硬件状态机、处理器指令(也被称作微指令)、操作模式(例如PAL模式)或模式位或指令操作组、微码或微码操作(uop)和硬件控制信号或事件耦合,或被它们访问。可以使用各种类型的编码处理。写入储存装置的私有状态区域的数据可以在存储之前被改变。这种类型的编码处理被称为数据编码。可替换地,可以改变用于访问私有状态区域中的私有状态的地址。这种类型的编码处理被称为地址混淆,并且从原始地址到已混淆地址的转化(transformation)称为地址映射。数据编码和地址混淆如下所述。编码处理可以是静态的或动态的。静态编码在机器运行时(并且在执行编码处理时)不随时间改变。(静态编码可以在处理器初始化/重启或引导(boot)阶段改变或被重新配置,但不在随后的运行操作期间改变或被重新配置。)产生静态编码的处理称为静态混淆。可替换地,在处理器运行时编码处理可以产生随时间改变的编码结果。这些处理在此被称为动态混淆。例如,写入储存装置130中的给定私有状态的元素内容的储存格式可以在机器执行期间改变。在此这被称为动态混淆。例如,每当状态数据需被写入储存装置时,根据(处理器产生和追踪的)随机或伪随机序列,所述格式可以在大字节序(big-endian)和小字节序(little-endian)之间改变;这个改变可以只影响要读取和写入私有数据的存储器区域。再次重申(again),在此的目的是使得从储存装置130中的可公开访问的储存区域快速逆操作和解码状态数据变得困难。在一个实施方案中,当私有状态数据被写入储存装置时,它被写入到具有连续地址的储存区域中(例如主存储器)。在其他实施方案中所述私有数据区域可以是不连续的,由多于一个不同的储存区域构成。编码没有必要完全占用(populate)私有状态区域;也就是说一些位或字节(byte)可以保持为未使用。可以通过改变私有状态区域大小,例如使其比严格要求的存储私有数据的装置更大,来获得一些设计编码和/或混淆函数的自由。(例如,如稍后描述的,这将允许使用更大的MISR(多输入转换寄存器)多项式。)在本发明的实施方案中,多字节(例如32位“长”整数)状态数据值被分成几部分,所述几部分随后被存储到不连续的位置,而不是全部按顺序存储。因此,4字节的值可以被分成4个1字节的值存储到私有状态区域中的不连续的位置。在机器正在操作时,所述4个1字节的值所存储的位置可以动态并且以随机的方式改变。当然,实施方案应该能够定位和解码这些数据。注意到在使用多次存储器访问来存储或加载单个数据值的情况下,ISA可以对访问的原子性施加某些要求。在本发明的实施方案中,用于访问储存装置的地址位是经过编码的。对地址位的编码可以改变地址位的排序(或地址位的组)。给定存储器区域中从小端序(little-endian)到大端序(big-endian)格式的转换(switching)可以是这样的实施例。其他地址混合(mix)映射是可能的,其中一些可能涉及更繁复的转化。另一种类型的地址编码将一组K个不同的地址映射到另一组K个不同的地址;即丛数学角度来说,映射是双射的(bijective)(既是单射的(一对一)也是满射的(映成的(onto)))。在此,较高的地址位可以保持不变,而较低顺序的地址位发生改变。在这些情形下,构建将给定存储器范围映射回到其自身的映射是可能的。也就是说,存储器范围的基地址偏移是相同的而且存储器区域的大小是相同的。这是一个有吸引力的解决方案因为只有存储器范围内的数据是“已混淆的”。也就是说,只有在所述范围内的地址位是混合的。图4和图6提供了一个这样的映射和相关联的地址混合机制的实施例。当私有状态区域的大小或基地址是低于N元逻辑的幂时,地址混淆机制可能更加易于使用。大多数当前的处理器使用二元逻辑,因此大小或基地址是2的幂的私有状态区域是优选的。(在此讨论了二元逻辑和算术运算(arithmetic),但是在适当的时候可以使用N元逻辑和算术运算并且认为它用于一般的情况)。可以使用过滤器和其他的机制(mechanism)来管理其大小和基地址不是N元逻辑的幂的私有状态区域。这些地址位操作可以与各种存储器组织和虚拟存储器技术(例如分页、分段等)共存。地址混淆机制可以改变存储器中的数据的布局(layout),并且用于混合数据,但有时只在储存装置的粒度(granularity)范围内操作。在大多数当前的处理器中,主存储器是可字节寻址的,因此数据元素的单个字节的位置可以在私有状态区域中重新排列,但是单个字节内的数据位不被地址混淆改变(但是数据编码机制可以改变它们)。在这些地址映射实施方案中,经过一些解码处理可以提取出(extract)原始地址映射。这个提取处理是应用地址映射函数的逆函数(inversexa0function)的应用。根据该要求选择映射函数;并非所有的地址映射函数都是可逆的。本发明的实施方案对写入储存装置的数据位进行编码。这些数据编码可以重组(reshape)存入私有状态区域中的数据,而不一定受寻址能力约束条件例如可寻址储存装置的尺寸所限制。数据段可以与其他数据段交换。例如,每一个字节中的两个半字节(nibble)(也就是一个字节中的4位段)可以互相交换。数据编码可以用常量异或掩码经过逐位异或得到。数据也可以是用多输入反馈位移寄存器(MISR)的输出经过逐位异或得到。数据编码可以使用加密函数来实现。在这些实施方案中,可以通过一些解码处理提取出原始数据。该解码处理应该确保它快于在所述平台上运行的软件可用的解码方法(例如使用ISA定义的加载和储存操作、数学操作等)。例如,图4中的表470和480示出了应用于给定16字节范围的存储器地址中的数据的类似于维吉尼亚加密的使用。上面列出的一些实施方案可以使用静态映射实现。也就是说,他们在处理器或平台运行期间不发生改变。在设计时、制造期间、制造后期或系统操作早期(例如系统引导期间、系统上电时、系统重启时)可以设置适当的映射。可以或不可以用相同的静态映射配置不同处理器。如果直到系统可操作时(例如在系统引导时)映射才绑定(bound),那么可能每次处理器引导时要选择新的映射。在实施方案中,每个不同的控制集(例如操作模式、指令组)可以使用不同的映射配置。在一个控制集中,映射保持恒定。但是,在指令组或模式之间,映射可以(或不可以)不同。可以用在处理器操作期间改变的动态映射来实现其他实施方案。在实施方案中,仅在当前储存装置中的任何私有状态区域中不存在已编码数据时,映射配置才可以发生改变。该实施方案可以使用计数器,所述计数器在已编码数据被写入储存装置的私有状态区域时激活该私有状态区域并递增。当该私有状态区域不再被认为是活动的时,计数器递减。计数器为零时可以改变映射配置。在实施方案中,为每一个私有状态区域将映射配置存到映射描述符中。映射描述符可以存储在私有状态区域自身中的已知、未被编码的位置,或者由追踪结构(例如队列或查找表)来分别维护,所述追踪结构可以驻留在处理器的内部或外部。在实施方案中,对于每个私有状态区域可能有不同映射。图2描述了根据本发明的实施方案用于从私有状态储存区域读取已编码私有状态数据值的处理200。处理可以由包括硬件(例如电路、专用逻辑、可编程逻辑、微码等)、软件(例如在通用计算机系统或专用机器上运行)或两者组合的处理逻辑执行。在一个实施方案中,在图1的处理器110中实现处理逻辑。参照图2,处理200从处理逻辑确定数据元素(dataxa0element)的地址(处理方框202)开始。接着,处理逻辑确定数据元素是否以已编码的形式存储在储存装置的私有状态区域中(处理方框204)。本发明的实施方案使用微码产生的或硬件产生的控制信号,所述控制信号向处理逻辑指示所请求的数据元素需要进行解码。缺少这个信号将导致指向方框250的“否”路径的执行。如果数据元素不需被解码,那么处理逻辑前进到处理方框250,其中处理逻辑从储存装置加载处理方框202中确定的地址上的数据元素。所述处理可以随后终止。加载的数据不被解码;也就是说不执行地址或数据解码。注意到该路径上读取的数据可以是普通的(也就是说不是私有状态数据),或它可以是已编码形式的私有状态数据(但是以非指定的方式被访问)。但是,如果数据元素需要进行解码,随后处理逻辑基于处理方框202中确定的地址确定数据元素所存储的地址(该地址可以是被混淆的)xa0xa0(处理方框210)。处理逻辑随后从储存装置加载处理方框210中确定的地址上的数据元素(处理方框220)。处理逻辑随后将处理步骤220中从私有状态储存区域加载的数据元素解码(处理方框230)。已解码的值是处理200的结果。所述处理可以随后终止。该已解码状态常被置于私有状态缓存或处理器的私有、本地状态中。图3描述了根据本发明的实施方案用于将私有状态数据值存入私有状态储存区域的处理300。处理可以由包括硬件(例如电路、专用逻辑、可编程逻辑、微码等)、软件(例如在通用计算机系统或专用机器上运行)或两者组合的处理逻辑执行。在实施方案中,在图1的处理器110中实现处理逻辑。参照图3,处理300从处理逻辑确定数据元素的数据值和储存地址(处理方框302)开始。随后处理逻辑确定是否要被存储的数据元素是私有状态元素(处理方框304),所述私有状态元素以已编码的形式存储在储存装置的私有状态区域中。本发明的实施方案使用微码产生的或硬件产生的控制信号来给处理逻辑发信号通知正被写入的数据元素需要进行编码。缺少这个信号将导致指向方框350的“否”路径的执行。如果数据元素不需以已编码的形式存储在私有状态区域中,那么处理逻辑前进到处理方框350,其中该处理逻辑将数据元素以未编码(未修改)的形式存储到储存装置中在处理方框302确定的地址上。所述处理可以随后终止。写入的数据是未经编码的。但是,如果数据元素要以已编码的形式存储到私有状态区域,那么处理逻辑随后对数据元素编码(处理方框310)并且确定在其上存储数据元素的已混淆的地址(处理方框320)。处理逻辑随后将现有的已编码数据元素存到储存装置中在处理方框320确定的地址上(处理方框330),所述处理可以随后终止。注意到处理方框310和处理方框320中执行的处理可以以相反的顺序执行,也就是地址值的混淆先于数据的编码。一些实施方案将执行这两个处理方框中的一个而不是两个都执行。一些实施方案可以并行执行这两个处理方框。现在翻到图4,以方框图的形式描述了计算机系统402。该系统402具有处理器404,所述处理器被设计成支持上述用于混淆储存装置中的私有状态数据的方法学。处理器404具有标准缓存410和私有缓存416,其中后者不能被运行于系统402的软件访问并且用于以未编码(未混淆的)的形式存储私有状态数据。在本实施方案中,也提供了系统芯片组406以允许处理器404与存储器408通信。芯片组406可以包括存储器控制器(未示出)以及其他连接计算机的外部设备所需的逻辑器件(也未示出)。在一些实施方案中,可以在处理器404中实现芯片组406的功能性或功能子集。在图4中示出了存储器408,所述存储器408可用于将处理器404的已编码私有状态数据存入可公开访问区域418。这是一个将密码应用于处理器404的内部处理器状态值,以免通过简单的监视和读取存储器408将其实际值轻易的恢复或逆操作的实施例。如上所述,可以以各种方式完成存储于已编码私有状态区域418中的数据的混淆。图4示出了一个这样机制的实施例,其中既有数据值被编码也有数据布局被编码/混淆。使用维吉尼亚密加密对表470中的第一数据值进行编码,产生了表480所示的数据值(下面描述)。随后应用了从私有状态数据的逻辑地址值到物理地址值的特殊映射,其中映射结果如表490所示。所述物理地址指示了私有状态数据被存储在存储器中的实际位置。因此可以说物理地址是由对逻辑地址的编码产生的。图4中标题为“已解密地址/数据”的表470具有一列示例性的逻辑地址和他们相关的私有状态数据值,所述数据值以未编码的形式存储在缓存416中。在此选用所有的0数据值来体现结果编码。注意到“X”表示状态数据的虚拟和物理地址的未编码的高位。标题为“私有状态存储器地址映射”的表490示出了在未编码和已编码地址之间映射的实施例。在此只对低序的4位进行编码。图6描述了可用于图4的系统的可编程(参数化的)地址映射函数的实施方案。在图6中,将用P0=1、P1=1、P2=0、P3=0加载多项式控制寄存器604以实现本原多项式x4+x1+x0并且用全0加载可选掩码寄存器610。该逻辑是控制一般的w位宽的MISR的等式的变体(adaptation),并且可用于构建(construct)各种地址编码的组合逻辑。参数化的MISR状态等式是:Si(t+1)=Si-1(t)+Ii+(Pi·Sw-1(t)),1≤i≤w-1S0(t+1)=I0+(P0·Sw-1(t))在此运算符“+”表示模2加法(XOR),并且“·”表示模2乘法(AND)。参数“t”表示时间(时钟滴答),Si表示第i个触发器状态,Ii表示第i个输入向量的位并且Pi表示第i个多项式系数。Pw的系数隐含为1。为完成图4的地址混合实施方案,用对应的地址Ai值来替换所有Si(t),并且用输出Oi来替换Si(t+1)。其他实施方案也是可能的。序为w的本原多项式是有用的,因为他们可以产生“最大的序列”;也就是说,他们可以产生完全w位宽的二进制组合或模式。可以使用高达300级(degree)(300位宽)或更高阶(order)的本原多项式。使用图4来描述以上的功能,为了访问逻辑地址偏移量为0001的数据(如表项471所示),访问物理存储器的0010位置(如表项491所示)。在这种情况中与该地址相关的未编码的内容值(见表项471)恰好都是0。但是,如表项481所示以已编码形式存储时,非0的位串(也就是11110101)出现在存储器408的公开区域418中。(之后将更详细地描述该编码的加密)。虽然为了方便起见示出了有限的位宽,该技术可以被应用于更宽或并行的(parallel)、按位分割的(bit-sliced)数据中。如图4所示,存储器408中已编码私有状态数据的储存和恢复可以用图5所示逻辑块来实现。对于这个实施例来说,在存储和恢复储存装置的私有状态数据时,已经定义了处理器所使用的特殊微操作(例如控制信号)。地址发生单元(AGU)504接收特殊微操作并且在本实施方案中计算具有高位部分和低位部分的逻辑地址。在实施方案中,逻辑地址是虚拟地址。在另一个实施方案中,如图5所示,逻辑地址是如在Intelntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="64"/>Pentiumntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="64"/>处理器中找到的线性地址。在再一个实施方案中,逻辑地址是物理地址并且无需对高地址位进行翻译。在图5中,地址的高位部分流入线性到物理地址翻译块(也称为翻译参考缓冲器或TLB)508,所述翻译块将该线性地址的高位部分(可以是虚拟页数)翻译成部分物理地址509。在本实施方案中的地址混淆/编码单元514用于接收线性地址值的低位部分,所述线性地址值与处理器的给定私有状态数据相关联。对应地,所述地址混淆单元514翻译该线性地址低位部分,以提供物理地址509的另一部分。例如,正如参考上面图1和图4描述的,物理地址这部分的值是线性地址被混合或被编码的版本(version)。在实施方案中,特殊微操作或微码操作信号(控制信号)确定地址编码单元514是否对低序地址位进行编码。如果控制信号未被断言,该低序地址位可以以未编码的形式通过或绕过所述单元514。即使在编码控制信号(或多个信号)被断言时,一些地址位也可以以未编码的形式通过。例如,当私有状态存储器区域小于低序位可以寻址的地址空间大小时,只要地址位的子集需要进行编码,这种情况可以发生。存在着其他实施方案,其中地址编码在线性到物理地址的翻译之后进行并且因此可以处理比虚拟存储器页大的地址空间的编码。如图5所示的实施方案的优点在于线性到物理地址的翻译与编码操作并行进行而不是串行进行,所以潜在地它更快一些。同样,编码操作通常只对私有状态存储器区域小于虚拟存储器页大小的情况才有必要。在连接物理地址的高位部分(由TLB508产生)和物理地址的低位部分(由地址混淆/编码单元514产生)时,产生物理地址509,所述物理地址509指向存储器408中的存有给定状态数据的实际位置。在本实施方案中,物理地址509首先应用于缓存410中并且如果导致了未命中,从存储器408中取出所述位置的内容或者将所述位置的内容输入存储器408中(依赖于所述操作是加载还是储存)。存储器层次的其他排列是可能的。注意到在本实施方案中,已指派的用于存储私有状态数据的存储器408中的区域可以只占用页的一部分并且可以与虚拟存储器页边界对齐。在那种情况下,只有线性地址的页偏移部分(也就是线性地址的低位部分)才能通过地址混淆/编码单元514,以产生已编码的物理页偏移。可以采用其他实现。此外,地址混淆/编码单元514可以包含范围选择逻辑以便只有存储器的特定区域内的地址被编码。使用该逻辑,储存区域可以不必与虚拟存储器页边界对齐或,如早些所述,大小不必是2的幂。可以使用微码、软件、查找表、固定功能逻辑、可编程逻辑或这些技术的任何组合来内部实现地址混淆/编码单元514(关于一个这样的实现的关键部件可见图6)。仍旧参考图5,注意到在本实施方案中处理器的标准缓存410用于存储已编码或已混淆的私有状态数据。当要传送来自缓存410或存储器408的已编码内容510时,可以使用数据解码/编码单元524对其进行解码。在本实施方案中,已解码的内容值520随后存入处理器的私有状态区域516中。如以前,缓存410和存储器408是可公开访问的(例如被操作系统访问),而私有状态区域只能被处理器内部的工作访问。在将私有状态数据以已编码形式写入储存装置时,数据编码/解码单元524也可反过来使用。在这样的实施方案中,所述单元524对源于私有状态区域516的内容值进行编码。在一些实施方案中,可以在处理器的ISA中提供特殊的指令以访问一些或所有的私有状态数据。这些指令在其执行时可以导致来自私有状态区域516的未编码数据的传输(见图5),或它们可以发送(dispatch)特殊的微操作或硬件控制信号以访问存储器408中的区域418(见图4),其中私有状态数据以已编码形式存储于所述存储器408中。虽然ISA的其他指令(例如普通的加载和储存指令)可以访问存储器408和/或缓存410的公开区域,这些读访问的结果是私有状态数据值,所述私有状态数据值地址值是被混淆的和/或其数据内容是被编码的。因此,在没有特殊的硬件的帮助下,不可能以一种快速的方式逆操作或以其他方式恢复私有状态数据。例如,虽然上述机制具有在处理器设备内部实现的逻辑部件,但是可以采用其他组织在系统芯片组中实现一些或所有的编码逻辑。此外,可以定义特殊的总线周期来访问存储器408的私有状态区域418(图4)。现在翻到图6,示出了示例性的、可编程的4位、地址位的混淆(编码)机制的更详细设计。该设计可以用于图5的地址混淆/编码单元514中并且可用于产生图4中的逻辑到物理地址的映射(用于低阶的位)。图6的逻辑图是使用上述方法的4位宽,具有四次多项式的多输入线性反馈转换寄存器(MISR)组合逻辑部分的实施方案。多项式控制寄存器604,可选掩码寄存器610和输入地址源606流入该组合逻辑。注意到该逻辑不是完整的MISR,但确实对MISR的映射属性起平衡作用(leverage)。图6中的多项式控制寄存器604加载的是多项式的二元系数。例如,为了配置图6的电路以实现图4中描述的逻辑到物理地址映射,所述映射采用本原(primitive)多项式x4+x1+x0进行映射,将把二元系数P0=1,P1=1,P2=0,P3=0加载进多项式控制寄存器604中。如果可选掩码寄存器610置为0000,地址位向量0000将映射到0000。输入地址源606表示要被编码的4位逻辑地址。可选掩码源610(例如控制寄存器)允许构建不同的映射。如上所述,掩码寄存器610和多项式控制寄存器604可以在运行时间动态改变。例如,在上电重启处理期间,被加载的值可以从伪随机数据源得到。这可以阻止访问私有状态数据的尝试或绕过任何指定的访问方法(例如上述的特殊ISA指令)的尝试。图6是合理有效的实施方案,所述实施方案允许对二元系数和掩码值的编程,并且允许使用适量的具有相对少的门延迟的硬件。可以使用其他逻辑设计来实现地址混淆/编码单元514。可以使用附加的逻辑或内容可寻址存储器(CAM)来进一步限制地址位编码机制可修改的地址范围。此外,可以为编码和解码处理设计更加复杂的逻辑以例如加强编码操作(如果需要的话)。私有状态数据的内容值的编码可以以一种类似于上述的地址混淆的方式完成。一种方法是和要被编码的私有状态的给定元素的内容一起,在逻辑地址偏移中进行XOR(针对私有状态数据的对齐区域),或在一些常量种子值(seedxa0value)中进行XOR。可以在私有状态数据值流上使用更加复杂的编码机制。可以利用初始的种子来使用反馈转换寄存器技术(线性、非线性、多输入等)的变量。初始的种子可以被定义为加载到反馈转换寄存器的初始状态。对于每一个连续的数据值,转换寄存器可以是先进的,并且其内容逐位与内部寄存器的内容进行XOR。这称为维吉尼亚(Vigenère)加密,并且在上面图4的表470,480中示出了该密码的实施例,其中,表470中的每一个未编码内容(数据)值是0(例如表项471)但是在以已编码形式存储到存储器408中的480中(例如表项481)时,不出现这样的值。利用该密码,可以使用转换寄存器来产生伪随机的逐位XOR掩码序列。在这种情况中,当每一个伪随机字节宽度的掩码由MISR产生(见480)时,它与地址序列中的下一个数据值逐位进行XOR。只需要多项式和初始转换寄存器种子值来再次产生严格相同的序列。在实施方案中,编码和/或解码单元的配置信息(例如多项式和初始种子)可以与已编码状态区域一起存入存储器408。为了解码私有状态,配置信息(例如多项式和初始种子)将被取出(并且可以使用另外的固定编码技术对其解码),并且随后被使用。只要以相同的顺序将序列中的每个掩码施加于对应的数据(例如每个可寻址数据单元应用一个掩码),逐位XOR掩码操作(masking)将产生(解码出)原始数据。如前所述,可以使用不同的方法和修改限制条件来改变多项式和初始MISR种子值(例如引导时间,运行时间等)。为了恢复原始数据,应当应用与最初使用的编码方法相对应的解码方法,也就是撤销编码操作。维吉尼亚加密只是私有状态数据值编码机制的一个实施例,它是有效的并且允许使用简单的二元系数列表、种子等进行的编程和适量的只具有少数门延迟的硬件。其他实施方案也是可能的。在本发明的实施方案中,处理器可以在处理器的操作模式间转换时使用储存装置中的私有状态区域132(见图1)。例如,处理器在进入上述的系统管理模式(SMM)时可以访问私有状态区域。操作模式间的这些转换在此称为模式切换。例如,模式切换包括普通与系统管理模式间、虚拟机系统中虚拟机(VM)和虚拟机监视器(VMM)间、用户级的操作系统进程和操作系统内核(kernel)的移动等。在本发明的实施方案中,在私有状态区域的指派之后,处理器在任何时候可以使用储存装置中的私有状态区域132。例如,在虚拟机系统中,在虚拟机操作期间,VMM可以在储存装置中分配区域以供处理器使用。VMM可以给处理器指示私有状态区域的位置(例如通过执行ISA中定义的指令)。处理器接收该指示后,可以随意利用它认为合适的私有状态区域。例如,在VM和VMM转换期间(也就是在模式切换点),处理器可以访问私有状态区域。此外,处理器可以在VM或VMM操作期间访问所述区域。例如,处理器可以访问私有状态区域的控制信息或者处理器可以将暂时值存入私有状态区域中。ISA还可以提供机制,通过该机制VMM可以指示(designate)私有状态区域不应再被使用(例如通过执行指令)。在其他实施方案中,可以使用其他方法指派私有状态区域。例如可以通过对特定模式寄存器(MSR)的写操作、执行ISA中的指令、对储存装置中的位置的写操作等来指派私有状态区域。虽然上面的实施例可以在执行单元和逻辑电路的环境中描述本发明的实施方案,但是可以以软件的方式来完成本发明的其他实施方案。例如,在一些实施方案中,本发明可以作为计算机程序产品或软件被提供,所述产品或软件可以包括在其上存储有指令的机器或计算机可读介质,所述指令可用于对计算机(或其他电子设备)进行编程已执行根据本发明实施方案的处理。在其他实施方案中,可以用特定的硬件组件来执行操作,所述硬件组件包括微码、硬连线逻辑或可编程计算机组件和传统硬件组件的任何组合。因此,机器可读介质可以包括任何可用于存储和传输机器(例如计算机)可读形式的信息的器件,但是不限于软盘、光盘、致密盘、致密盘只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机访问存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪存存储器、通过互联网、电、光、声或其它形式的传播信号(如载波,红外信号,数字信号等)等的传输。此外,设计可能经历从建立到仿真到加工(fabrication)各种阶段。表示设计的数据可以以多种方式来表示该设计。首先,在仿真中发挥作用的硬件可以使用硬件描述语言或另外的功能描述语言来表示。再者,在设计过程的一些阶段可以生产具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到了数据表示硬件模型中各种器件的物理位置的级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是为掩模指明不同掩模(mask)层上各种特征存在或不存在的数据,所述掩模用于生产集成电路。在所述设计的任何表示中,可以以机器可读介质的任何形式来存储数据。被调制或另外产生的用于传输这些信息的光或电波、存储器,或磁或光存储例如盘片可以是机器可读介质。任何这些介质可以“携带”或“指示”设计或软件信息。在指示或携带有代码或设计的电子载波被传送到了执行拷贝、缓冲或重新传送电信号的程度时,创建新的拷贝。因此,通信提供商或网络提供商可以复制具体实施本发明的技术的制品(例如载波)。在前述的说明书中,参考各种技术描述了本发明,所述各种技术用于从可公开访问储存装置中访问有关数据处理机的状态的数据。但是,应该意识到,正如所附权利要求书所阐述的,所做的各种修改和变化没有背离本发明的实施方案的较宽的精神和范围。因此,本说明书和附图可以被视为描述性的而非限制性的。